﻿// 4493. 环形连通分量.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
/*
https://www.acwing.com/problem/content/4496/

给定一个 n
 个点 m
 条边组成的无重边无自环的无向图。

请你计算，其包含的所有连通分量中，有多少个是环形的。

我们认为一个连通分量是环形的，当且仅当它的所有顶点重新排序后，可以满足：

第一个顶点通过一条边与第二个顶点相连。
第二个顶点通过一条边与第三个顶点相连。
…
最后一个顶点通过一条边与第一个顶点相连。
所有上述提到的边各不相同。
连通分量中不包含除上述边以外的任何其他边。
根据定义，任何环形连通分量都至少包含三个顶点。

下面给出一个无向图示例。

1.png

上面的无向图，一共包含 6
 个连通分量，其中有 2
 个连通分量是环形的：[7,10,16]
 和 [5,11,9,15]
。

输入格式
第一行包含两个整数 n,m
。

接下来 m
 行，每行包含两个整数 ui,vi
，表示点 ui
 和点 vi
 之间存在一条无向边。

保证输入不存在重边和自环。

输出格式
一个整数，表示环形连通分量的数量。

数据范围
前五个测试点满足 1≤n≤20
，0≤m≤20
。
所有测试点满足 1≤n≤2×105
，0≤m≤2×105
，1≤ui,vi≤n
，ui≠vi
。

输入样例1：
5 4
1 2
3 4
5 4
3 5
输出样例1：
1
输入样例2：
17 15
1 8
1 12
5 11
11 9
9 15
15 5
4 13
3 13
4 3
10 16
7 10
16 7
14 3
14 4
17 6
输出样例2：
2

*/
#include <iostream>

int main()
{
    std::cout << "Hello World!\n";
}

 